package cn.jingyuan.bee.utils.getter;

import java.math.BigDecimal;
import java.math.BigInteger;

/**
 * 可选默认值的数组类型的 Get 接口<br>
 * 提供一个统一的接口定义返回不同类型的值（基本类型）<br>
 * 如果值不存在或获取错误，返回默认值
 */
public interface OptArrayTypeGetter {

    /**
     * 获取 Object 型属性值数组
     *
     * @param key 属性名
     * @param defaultValue 默认数组值
     *
     * @return 属性值列表
     */
    Object[] getObjects(String key, Object[] defaultValue);

    /**
     * 获取 String 型属性值数组
     *
     * @param key 属性名
     * @param defaultValue 默认数组值
     *
     * @return 属性值列表
     */
    String[] getStrings(String key, String[] defaultValue);

    /**
     * 获取 Integer 型属性值数组
     *
     * @param key 属性名
     * @param defaultValue 默认数组值
     *
     * @return 属性值列表
     */
    Integer[] getIntegers(String key, Integer[] defaultValue);

    /**
     * 获取 Short 型属性值数组
     *
     * @param key 属性名
     * @param defaultValue 默认数组值
     *
     * @return 属性值列表
     */
    Short[] getShorts(String key, Short[] defaultValue);

    /**
     * 获取 Boolean 型属性值数组
     *
     * @param key 属性名
     * @param defaultValue 默认数组值
     *
     * @return 属性值列表
     */
    Boolean[] getBooleans(String key, Boolean[] defaultValue);

    /**
     * 获取 Long 型属性值数组
     *
     * @param key 属性名
     * @param defaultValue 默认数组值
     *
     * @return 属性值列表
     */
    Long[] getLongs(String key, Long[] defaultValue);

    /**
     * 获取 Character 型属性值数组
     *
     * @param key 属性名
     * @param defaultValue 默认数组值
     *
     * @return 属性值列表
     */
    Character[] getCharacters(String key, Character[] defaultValue);

    /**
     * 获取 Double 型属性值数组
     *
     * @param key 属性名
     * @param defaultValue 默认数组值
     *
     * @return 属性值列表
     */
    Double[] getDoubles(String key, Double[] defaultValue);

    /**
     * 获取 Byte 型属性值数组
     *
     * @param key 属性名
     * @param defaultValue 默认数组值
     *
     * @return 属性值列表
     */
    Byte[] getBytes(String key, Byte[] defaultValue);

    /**
     * 获取 BigInteger 型属性值数组
     *
     * @param key 属性名
     * @param defaultValue 默认数组值
     *
     * @return 属性值列表
     */
    BigInteger[] getBigIntegers(String key, BigInteger[] defaultValue);

    /**
     * 获取 BigDecimal 型属性值数组
     *
     * @param key 属性名
     * @param defaultValue 默认数组值
     *
     * @return 属性值列表
     */
    BigDecimal[] getBigDecimals(String key, BigDecimal[] defaultValue);

}
